# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/26 11:04 
@Author  : ZhangShenao 
@File    : 2.ChatPromptTemplate基础用法.py 
@Desc    : ChatPromptTemplate基础用法
"""
from langchain_core.messages import AIMessage
from langchain_core.prompts import MessagesPlaceholder, HumanMessagePromptTemplate, ChatPromptTemplate

# 创建ChatPromptTemplate
# ChatPrompt可以包含多种角色和消息类型
chat_prompt_template = ChatPromptTemplate.from_messages([
    ('system', 'You are a helpful assistant.'),
    MessagesPlaceholder('chat_history'),  # 如果不确定是否还有其他消息,可以使用消息占位符
    HumanMessagePromptTemplate.from_template('What is the capital of {country}?')
]).partial(country='China')  # partial()函数可以先填充模板中的部分变量

# 调用ChatPromptTemplate.invoke()函数,填充变量值,生成PromptValue
chat_prompt_value = chat_prompt_template.invoke({
    'chat_history': [
        ('human', 'I am a chinese coder'),
        AIMessage('What can i help you?')
    ],
    'country': 'China',
})

# 打印PromptValue
print(f'chat_prompt_value: {chat_prompt_value}')

# 调用PromptValue.to_string()函数,生成文本消息
prompt_text = chat_prompt_value.to_string()
print(f'prompt_text: {prompt_text}')
